<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		//1.push() 添加元素到数组结尾，返回数组的长度
		let arr = [1, 2, 3]
		let p1res = arr.push(10)
		console.log("p1res-----",arr,p1res)//[1, 2, 3, 10] 4

		//2.unshift() 添加元素到数组开头，返回数组的长度
		let u1res = arr.unshift("第一")
		console.log("u1res-----",arr,u1res)//['第一', 1, 2, 3, 10] 5

		//.3.pop() 删除数组结尾的元素，返回删除的元素
		let arrpop = [3, 4, 5, "end"]
		let popres = arrpop.pop()
		console.log("popres----", arrpop, popres)//[3, 4, 5] end

		//4.shift() 删除数组开头的元素，返回删除的元素
		let sres = arrpop.shift()
		console.log("sres----", arrpop, sres)//[4, 5] 3

		//5.splice(开始的位置(下标)，截取的长度) 返回截取的内容
		let sparr = [1, 2, 3, 5, 6]
		// let spres = sparr.splice(1, 2)
		//一个参数的时侯表示，从这个下标一直删到最后
		// let spres = sparr.splice(1)--->[1] [2, 3, 5, 6]
		//如果第一个参数是负数，表示倒着数， -1表示倒数第一个
		// let spres = sparr.splice(-3, 3)--->[1, 2] [3, 5, 6]
		// console.log("spres----", sparr, spres)//[1, 5, 6] [2, 3]

		//6.splice(开始的位置(下标)，截取的长度, 添加元素) 返回截取的内容并替换所添加的元素
		let spres2 = sparr.splice(0, 1, "a", "b", "c")
		console.log("spres2----", sparr, spres2)//['a', 'b', 'c', 2, 3, 5, 6] [1]

		//7.concat() 合并数组 返回新数组
		var conArr = [1, 2, 3]
		var conArr2 = [1, 2, 3]

		let conRes = conArr.concat(conArr2)//[1, 2, 3, 1, 2, 3]

		console.log("conRes---",conArr, conArr2, conRes)

		//8.sort() 排序
		/*
			排序原理：
				1.先利用toString() 转成字符串，让字符串按照unicode表进行比较，根据大小排序
					怎么看unicode值----使用 charCodeAt()
		*/
		let sortArr = [2, 3, 1]
		console.log("sortArr-----", sortArr.sort())//[1, 2, 3]       
		let sortArr2 = [3, 20, 2]
		console.log("sortArr2-----", sortArr2.sort())//[2, 20, 3]
		let sortArr3 = ["cat", "dog", "pig"]
		console.log("sortArr3-----", sortArr3.sort())//['cact', 'dog', 'pig']
		console.log("cat".charCodeAt())//99
		console.log("dog".charCodeAt())//100
		console.log("pig".charCodeAt())//112

		//自定义排序规则 用法 数组.sort(自定义方法名)

		//升序排列 从小到大
		function compareAsc(a, b){
			if (a < b) {
				return -1;//表示a放在b前面
			}else if (a === b) {
				return 0;
			}else{
				return 1;//表示a放在b后面
			}
		}
		console.log("升序---------",sortArr2.sort(compareAsc))//[2, 3, 20]

		//降序 从大到小
		function compareDesc(a, b){
			if (a < b){
				return 1;//表示a放在b后面
			}else if (a === b) {
				return 0;
			}else{
				return -1;//表示a放在b前面
			}
		}
		console.log("降序---------",sortArr2.sort(compareDesc))//[20, 3, 2]

		//9.reverse() 对数组中的元素进行反转
		let revArr = ['a', 1, 2, "b"]
		console.log("revArr------",revArr.reverse())//['b', 2, 1, 'a']

		//10.数组转为字符串  toString String
		console.log("转字符串", String(revArr), revArr.toString())//b,2,1,a  b,2,1,a

		//11.join() 拼接字符串
		console.log("join-----", revArr.join("-"))//b-2-1-a
		console.log("join-----", revArr.join(""))//b21a

		//12.indexOf() 返回某个字符首次出现的位置
		//如果没有就返回-1
		let str = "qaq34rty8w3xctfghnmk"
		let arr3 = [1, 4, 4, 5]
		console.log("indexOf----", str.indexOf("ct"))// 12
		console.log("indexOf----", arr3.indexOf(4))// 1
		console.log("indexOf----", arr3.indexOf(99))// -1

		//13.charAt() 返会指定位置的字符
		console.log("charAt", str.charAt(5))// r

	    //14.split() 字符串拆分成数组
		 let str2 = "还有-三周过-五一"
		 console.log(str2.split("-"))//['还有','三周过','五一']

		let url = "http://www.baidu.com?userName=张三&passWord=123456&like=孙悟空"
		let urlRes = url.split("?")[1].split("&")
		console.log(urlRes)

		for (let i = 0; i <urlRes.lenght; i++) {
			console.log(urlRes[i].split("=")[1])
		}

		//15.slice(start,end) 截取数组中的元素 左闭右开 [ , ) , 不包含end
		let arr5 =["h","e","l","l","o"]
		console.log(arr5.slice(1,3))//['e','l']
		console.log(arr5.slice(1))//['e','l','l','o'] 一个参数--截取到最后

		//16.如何判断数组
		//Array.isArray()
		console.log(Array.isArray(arr5))//true
		//  变量 instanceof 数据类型
		console.log(arr5 instanceof String)//false
	</script>
</body>
</html>